import sys
from loguru import logger
from datetime import datetime
import pytz

# 自定义时间格式化函数，设置为 Asia/Shanghai 时区

def custom_time():
    return datetime.now(pytz.timezone("Asia/Shanghai"))

# 配置 Loguru 日志
logger.remove()  # 移除默认的日志配置
logger.add(
    "log/{time:YYYY-MM-DD}.log",  # 动态生成日志文件名
    rotation="00:00",            # 每天零点分割日志
    level="INFO",                # 日志级别
    enqueue=True,                # 异步记录日志
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",  # 设置日志格式
    serialize=False,             # 是否序列化为 JSON
    filter=None,                 # 过滤器
    colorize=True,               # 是否彩色化
    backtrace=True,              # 是否启用回溯
    diagnose=True,               # 是否启用诊断
    catch=True,                  # 是否捕获异常
)
import os

# 添加ERROR级别的日志文件
error_log_path = os.path.join("log", "error", "{time:YYYY-MM-DD}.log")
error_log_dir = os.path.dirname(error_log_path)
if not os.path.exists(error_log_dir):
    os.makedirs(error_log_dir)

logger.add(
    error_log_path,
    rotation="00:00",            # 每天零点分割日志
    level="ERROR",               # 只记录ERROR及以上级别的日志
    enqueue=True,                # 异步记录日志
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} | {message}",
    serialize=False,             # 是否序列化为 JSON
    filter=None,                 # 过滤器
    colorize=False,              # 文件日志不需要彩色
    backtrace=True,              # 是否启用回溯
    diagnose=True,               # 是否启用诊断
    catch=True,                  # 是否捕获异常
)

# 添加控制台日志
logger.add(
    sys.stdout,                  # 输出到控制台
    level="INFO",                # 日志级别
    format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",  # 设置日志格式
    colorize=True,               # 是否彩色化
    backtrace=True,              # 是否启用回溯
    diagnose=True,               # 是否启用诊断
)

# 修改 Loguru 的默认时间记录逻辑
logger.configure(
    extra={"custom_time": custom_time()}  # 添加自定义时间字段
)
